﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

using KCL.Code;
using KCL.Code.Business;

namespace KCL.Material
{
    public partial class ExportMaterial : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            if (Session[SessionManager.InSection] != null)
            {
                if ((int)Session[SessionManager.InSection] == 1)
                {
                    txtDate.Attributes.Add("ReadOnly", "true");
                    if (!this.IsPostBack)
                    {
                        CalendarExtender1.SelectedDate = DateTime.Today;
                    }
                    else
                    {
                        CalendarExtender1.SelectedDate = DateTime.ParseExact(txtDate.Text, "dd/MM/yyyy", null);
                    }

                    btnAddMExp.Enabled = dgvMaterialExp.Columns[8].Visible = (bool)Session[SessionManager.canCreate];
                    btnUpdateMExp.Enabled = (bool)Session[SessionManager.canModify];
                    return;
                }
            }
            Response.Redirect("~/Default.aspx");
        }

        protected void btnAddMExp_Click(object sender, EventArgs e)
        {
            // Check quantity
            int quantity;
            bool flag = true;
            if (!int.TryParse(txtQuantity.Text.Trim(), out quantity))
            {
                flag = false;
            }
            else if (quantity <= 0)
            {
                flag = false;
            }

            if (!flag)
            {
                lblMsgMaterialExport.ForeColor = System.Drawing.Color.Red;
                lblMsgMaterialExport.Text = "Số lượng nguyên liệu không hợp lệ.";
                return;
            }

            // Insert MaterialExport
            MaterialExport me = new MaterialExport();
            me.materialCode = cboMaterial.SelectedValue;
            me.quantity = quantity;
            me.receivePlace = txtReceivePlace.Text.Trim();
            me.receiver = txtReceivePlace.Text.Trim();
            me.exporter = txtExporter.Text.Trim();
            me.date = DateTime.ParseExact(txtDate.Text, "dd/MM/yyyy", null);
            me.note = txtNote.Text.Trim();
            if (MaterialExportServices.Insert(me))
            {
                dgvMaterialExp.DataBind();
                lblMsgMaterialExport.ForeColor = System.Drawing.Color.Green;
                lblMsgMaterialExport.Text = string.Format("Xuất {0} nguyên liệu {1} thành công.", quantity, me.materialCode);
            }
            else
            {
                lblMsgMaterialExport.ForeColor = System.Drawing.Color.Red;
                lblMsgMaterialExport.Text = string.Format("Xuất {0} nguyên liệu {1} thất bại.", quantity, me.materialCode);
            }
        }

        protected void btnUpdateMExp_Click(object sender, EventArgs e)
        {
            if (dgvMaterialExp.SelectedDataKey == null)
            {
                lblMsgMaterialExport.ForeColor = System.Drawing.Color.Black;
                lblMsgMaterialExport.Text = "Bạn chưa chọn hàng cần cập nhật.";
                return;
            }

            int quantity;
            bool flag = true;
            if (!int.TryParse(txtQuantity.Text.Trim(), out quantity))
            {
                flag = false;
            }
            else if (quantity <= 0)
            {
                flag = false;
            }

            if (!flag)
            {
                lblMsgMaterialExport.ForeColor = System.Drawing.Color.Red;
                lblMsgMaterialExport.Text = "Số lượng nguyên liệu không hợp lệ.";
                return;
            }

            MaterialExport mexp = new MaterialExport();
            mexp.id = (int)dgvMaterialExp.SelectedDataKey.Value;
            mexp.materialCode = cboMaterial.SelectedValue;
            mexp.quantity = quantity;
            mexp.receivePlace = txtReceivePlace.Text.Trim();
            mexp.receiver = txtReceivePlace.Text.Trim();
            mexp.exporter = txtExporter.Text.Trim();
            mexp.date = DateTime.ParseExact(txtDate.Text, "dd/MM/yyyy", null);
            mexp.note = txtNote.Text.Trim();
            if (MaterialExportServices.Update(mexp))
            {
                dgvMaterialExp.DataBind();
                for (int i = 0; i < dgvMaterialExp.DataKeys.Count - 1; i++)
                {
                    if ((int)dgvMaterialExp.DataKeys[i].Value == mexp.id)
                    {
                        dgvMaterialExp.SelectedIndex = i;
                    }
                }
                lblMsgMaterialExport.ForeColor = System.Drawing.Color.Green;
                lblMsgMaterialExport.Text = string.Format("Cập nhật thành công.");
            }
            else
            {
                lblMsgMaterialExport.ForeColor = System.Drawing.Color.Red;
                lblMsgMaterialExport.Text = string.Format("Cập nhật thất bại.");
            }
        }

        protected void dgvMaterialExp_SelectedIndexChanged(object sender, EventArgs e)
        {
            int id = (int)dgvMaterialExp.SelectedDataKey.Value;
            Code.MaterialExport mexp = MaterialExportServices.GetMaterialExportByID(id);
            try
            {
                cboMaterial.SelectedValue = mexp.materialCode;
                txtQuantity.Text = mexp.quantity.ToString();
                txtReceivePlace.Text = mexp.receivePlace;
                txtReceiver.Text = mexp.receiver;
                CalendarExtender1.SelectedDate = mexp.date;
                txtExporter.Text = mexp.exporter;
                txtNote.Text = mexp.note;
            }
            catch (Exception) { }
        }
    }
}